
#pragma once

#include <iostream>
#include <string>
#include <utility>
#include <vector>


using namespace std;


#define TOKEN "<TOKEN>"


#define FOR(size, i, numStart, numEnd) for (size i = numStart; i < numEnd; i++)

#define FOR_INT(i, numStart, numEnd)   FOR(int, i, numStart, numEnd)
#define FOR_INT_ADDREVIATED(i, numEnd) FOR(int, i, 0, numEnd)

#define FOR_SIZE_T(i, numStart, numEnd)   FOR(size_t, i, numStart, numEnd)
#define FOR_SIZE_T_ADDREVIATED(i, numEnd) FOR(size_t, i, 0, numEnd)


typedef const char   const_ch;
typedef const int    const_int; // Type alias for const int
typedef const string const_str; // Type alias for const string
typedef       string str;
typedef const bool   const_bool; // Type alias for const bool
typedef const size_t size_t_c; // Type alias for const size_t

typedef const vector<string>                     const_vec_str1; // Type alias for const vector<string>
typedef       vector<string>                     vec_str; // Type alias for vector<string>
typedef const vector<const_ch*>                  const_vec_const_ch; // Type alias for const vector<const char*>
typedef const vector<pair<const_str, const_str>> const_vec_pair_const_str; // Type alias for const vector<pair<const string, const string>>
typedef const pair<const_str, const_str>         const_pair_str; // Type alias for pair

const_ch folderSavefiles[]      = "files/";
const_ch standartFileComplete[] = "main";

const_str standartPath = str(folderSavefiles) + "main.cpp";
const_str standartCommandCompiler = " -o " + str(folderSavefiles) + standartFileComplete;

const_vec_const_ch       Langs           = {"cpp"};
const_vec_const_ch       Compilers_C_Cpp = {"clang", "g++"};
const_vec_pair_const_str LangCompilers   = {
    {"cpp", "g++"}, 
    {"c",  "gcc"}
};
const_vec_pair_const_str LogicalAnswers = {
    {"да", "yes"}, 
    {"нет", "no"}
};


// #define textError1    "ERROR: "
#define textError2 "ERROR: Нет минимальных флагов для компиляции"
#define textError3 "ERROR: Вы забыли написать код, который будет компилировать"
#define textError4 "ERROR: Ошибка в коде"

#define textStart        "Привет! Я могу помочь в компиляции исходного кода на C++! Просто отправьте мне ваш код в сообщении, я скомпилирую его и отправлю скомпилированный файл обратно вам. Пожалуйста, убедитесь, что ваш код написан на C++"
#define textHelp         "/help - Помощь\n/textCompiler [язук программирования] [компилятор] - /textCompiler cpp g++;\n/about - Обратная связь"
#define textAbout        "Разработчик: @Nikita_00101\nСайт: https://notabug.org/Nikita/bot_compile_telegram.git\nверсия: 0.1.5 альфа"
#define textComplite     "Файл скомпилирован!"
#define textPrintProgram "Вывод программы:\n\n"
#define textQuestionPrintProgram "Вывести результат работы кода?"